#set集合
# 可以看做是一个只有key的字典
# 可变数据类型
# 天生去重
# 必须存放不可变数据类型


#总结
# 可变数据类型有哪些：set集合，dict字典，list列表
# 不可变数据类型有哪些：tuple元组（虽说元组是不可变数据类型，但元组包含可变数据类型，
# 那其中的可变数据类型就是可以修改的），字符串也是不可变数据类型


# list列表特点：
# 有序项目集合
# 可以存放任何数据类型
# 可变数据类型

#元组tuple
# 特点:
# 有序项目集合
# 可以存放任何数据类型
# 不可变数据类型

# dict字典
# 字典是可变数据类型
# k，v存储的键值映射数据结构
# key必须是可hash对象，天生去重（key必须是不可变数据类型）

#set集合
# 可以看做是一个只有key的字典
# 可变数据类型
# 天生去重
# 必须存放不可变数据类型


#
# s1 = {1,2,3}
# s2 = {4,5,6}
# s3 = set("abcaabsdfsefasdaaa")
# print(s3)
# # 输出结果：{'e', 'f', 'a', 's', 'd', 'c', 'b'}
# # 很明显去重了，因为set集合数据类型天生去重
#
# s1.add(4)#直接在原地址添加
# print(s1)
# s2.remove(6)
# print(s2)



#集合的运算
# print( f"s1-s2:{s1-s2}")
# print( f"s2-s1:{s2-s1}")
# print(f"交集:{s1 & s2}")
# print(f"并集:{s1 | s2}")
# print(f"对称差集:{s1^s2}")
# 总之不同时在两者里面，并集-交集
#
# lst = [1,4,6,7,8,9]
# lst2 = [2,3,4,5,6,7]
# s4 = set(lst)-set(lst2)
# print(s4)

#新建文件夹、新建文件、判断文件是否存在、查看文件夹下面有哪些内容
import os
import time

# print(dir(os))
# print(os.listdir("../"))
#
# print(os.path.exists("c:test"))#判断某路径是否存在

#文件读写
#fp = open("test.txt")#如果直接执行这个命令肯定会报错，原因如下，需要加入很多参数才行，需要指明路径，打开方式等等。

# print( help(open) )
#open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
#第一个参数  文件路径
#第二个参数  打开方式
#           打开方式  默认 “r” 只读
#                    r                                  读写 r+    二进制文本  rb
#                    w  覆盖写，会将原本内容全部清空         w+                   wb
#                    a  追加写，追加到文件末尾              a+                   ab
#                    x  新建并写入



# fp =open("text.txt","w")
# # fp.write("xxx\nllll")
# #写缓存
# # 1.程序退出
# # 2.缓冲区满
# # 3.fp.flush()
# # 4.fp.close()
# # time.sleep(5)#睡的时候在缓存区，
# # 睡完就程序退出，从内存到磁盘
# print(fp.read(10))#默认从头读到尾，也可以指定读多少行
# print(fp.readline())#默认从光标当前位置读到行尾
# print(fp.readlines())#从当前行（光标所在行）读到末尾，每一行当作一个元素放在列表中
#
# #重置文件指针位置
# fp.seek(0)
# print("after seek:",fp.read())#重置指针后再读，全读完






#with 语句  管理python中上下文管理器的
#上下文管理器----》做这个事情前，要额外做什么，退出这个事之后，要做什么





# ======================函数
#按照形式参数来分，
# 必选参数
# 默认参数
# 可变长位置参数
# 可变长关键字参数


# 按照实参来分
# 位置参数
# 关键字参数
#
#

# def mykwargs(**kwargs):
#     print("可变长的关键字参数")
#     print(kwargs)
#
# myargs(1)
# myargs(1,2)
# myargs("abc",True,100)
# mykwargs(a=1,name="sc")
# mykwargs(key= 1,key2 = 2)
# print(100,200,300)

# * 和** 用在上面的函数则是打包，用在下面的容器类型前面就是解包
#  *   **
#packing   vs  unpacking
#*args  -->  1,2,3  ---> (1,2,3)
# **kwargs  -->a=1,b=2 --->{"a":1,"b":2}

#容器类型
# *list  -->[1,2,3]  --1,2,3
# **dict  -->["a":1,"b":2]
#
# list=[1,2,3,4]
# print(list)
# print(*list)

# def net(age):
#     if age<18:
#         return
#     print("可以上网")
# net(18)

# lst1 = [1,2,3]
# lst2 = ["ab"]
# def lst_append(lst):
#     lst.append(100)
#     lst2.append("xyz")
# lst_append(lst1)
# print(lst1)
# print(lst2)


























